# 变量的作用域


'''
    在函数内可以获取函数外的变量(全局变量)，但是函数内不能改变函数外的值
    函数内定义的变量(局部变量),函数外不能使用

全局变量
    在函数内部使用global 直接定义的变量，就是全局变量
    在函数外定义的变量，在函数内使用global 关键字进行声明，也是全局变量

globals() 获取全局数据
locals() 获取当前作用域数据
# 在函数外使用globals() locals() 结果都是一样的，因为当前作用域即全局作用域

数据类型分为两种
    可变数据类型：在函数外定义的变量，在函数内可以使用
        列表，字典
    不可变数据类型：在函数外定义的变量，只能在函数内访问，不能使用其他操作
        如果需要更改全局变量 在函数中使用 global 变量
'''
num = 10
varList = [1, 2, 3]
varDict = {'name': 'jack', 'age': 18}
def fun1():
    global num
    num += 20
    print(num)
    varList[2] = 4
    varDict['age'] = 20

fun1()
print(varList)
print(varDict)

gName = '张三'

def changeName():
    global gName
    lName = 'rose'
    print(gName)
    gName = 'jack'
    print(locals())

changeName()
print(gName)




